/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */
struct ListNode* deleteDuplicates(struct ListNode* head) {
    struct ListNode dummy = {0, head};//可能开头有重复元素，会删除头节点，因此要借助哨兵节点
    struct ListNode *cur = &dummy;

    while(cur->next && cur->next->next){
        int val = cur->next->val;
        if(cur->next->next->val == val){
            //再来个循环，判断 cur->next 及后面节点值与val的大小关系，如果相等就删除节点
            while(cur->next && cur->next->val == val){
                struct ListNode *tmp = cur->next;
                cur->next = cur->next->next;
                free(tmp);
            }
        }else{
            cur = cur->next;
        }  
    }

    return dummy.next;
}

/*给定一个已排序的链表的头 head ， 删除原始链表中所有重复数字的节点，只留下不同的数字 。返回 已排序的链表 。*/